package com.miniapp.entity;


import com.baomidou.mybatisplus.annotation.TableName;
import com.miniapp.entity.enums.AttachmentFileType;
import com.miniapp.service.MiniAttachmentService;
import com.miniapp.utils.SpringUtils;

/**
 * 附件表
 */
@SuppressWarnings("serial")
@TableName("mini_attachment")
public class MiniAttachmentEntity extends BaseEntity {
    /**
     * 文件名
     */
    private String filename;
    /**
     * 文件url
     * 注意：前台访问的是不要直接使用这个地址
     * 使用 getFullUrl方法,这个有处理cdn等前缀
     */
    private String fileUrl;
    /**
     * 文件大小
     */
    private Long fileSize;

    /**
     * 所属用户
     */
    private Long userId;

    /**
     * 文档类型 AttachmentFileType
     */
    private AttachmentFileType fileType = AttachmentFileType.IMAGE;
    /**
     * 额外数据
     */
    private String extraData;
    /**
     * 存储类型 详见:AttachmentStorageType
     */
    private Integer storageType;



    //=========附加字段===========
    //得到完整地址（带cdn前缀）
    public String getFullUrl(){
        return SpringUtils.getBean(MiniAttachmentService.class).getFullRequestUrl(this);
    }
    //得到完整地址,可缩放（带cdn前缀）
    public String getFullUrl(int width,int height){
        return SpringUtils.getBean(MiniAttachmentService.class).getFullRequestUrl(this,width,height);
    }
    //=========附加字段(end)======


    public String getFilename() {
        return filename;
    }

    public void setFilename(String filename) {
        this.filename = filename;
    }

    public String getFileUrl() {
        return fileUrl;
    }

    public void setFileUrl(String fileUrl) {
        this.fileUrl = fileUrl;
    }

    public Long getFileSize() {
        return fileSize;
    }

    public void setFileSize(Long fileSize) {
        this.fileSize = fileSize;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public AttachmentFileType getFileType() {
        return fileType;
    }

    public void setFileType(AttachmentFileType fileType) {
        this.fileType = fileType;
    }

    public String getExtraData() {
        return extraData;
    }

    public void setExtraData(String extraData) {
        this.extraData = extraData;
    }

    public Integer getStorageType() {
        return storageType;
    }

    public void setStorageType(Integer storageType) {
        this.storageType = storageType;
    }
}
